package com.yyplatform.admin.platform.role.service.impl;

import java.util.List;
import java.util.Set;

import org.modelmapper.ModelMapper;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import com.yyplatform.admin.platform.role.model.dto.SysLoginHisDTO;
import com.yyplatform.admin.platform.role.model.dto.SysLoginHisQueryDTO;
import com.yyplatform.admin.platform.role.model.entity.SysLoginHistoryEntity;
import com.yyplatform.admin.platform.role.repository.SysLoginHistoryRepository;
import com.yyplatform.admin.platform.role.service.SysLoginHisService;
import com.yyplatform.admin.infra.utils.DateUtils;
import com.yyplatform.admin.infra.utils.IntUtils;

import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * Created on 2024-09-20
 */
@Service
@Slf4j
@AllArgsConstructor
public class SysLoginHisServiceImpl implements SysLoginHisService {

    private SysLoginHistoryRepository sysLoginHistoryRepository;
    private ModelMapper modelMapper;

    @Override
    public Page<SysLoginHisDTO> query(SysLoginHisQueryDTO queryDTO) {
        Page<SysLoginHistoryEntity> pageImpl = sysLoginHistoryRepository.findPage(
                queryDTO.getUsername(),
                IntUtils.toInt(queryDTO.getErrCode(), -1),
                DateUtils.getBeginDate(queryDTO.getCreateTimeArr()),
                DateUtils.getEndDate(queryDTO.getCreateTimeArr()),
                queryDTO.getPageRequest().withSort(Sort.by("id").descending())
        );

        List<SysLoginHisDTO> lit =
                pageImpl.getContent().stream().map(e -> modelMapper.map(e, SysLoginHisDTO.class)).toList();
        return new PageImpl<>(lit, queryDTO.getPageRequest(), pageImpl.getTotalElements());
    }


    @Override
    public void delete(Long id) {
        sysLoginHistoryRepository.deleteById(id);
    }

    @Override
    public void deleteBatch(Set<Long> list) {
        sysLoginHistoryRepository.deleteAllById(list);
    }


    @Override
    public void deleteAll() {
        sysLoginHistoryRepository.deleteAll();
    }
}
